<?php

namespace Activity\Libraries;

class Helper
{

    /**
     * 是不是正确的Url的地址
     *
     * @param string $url
     * @param string $match
     *
     * @return boolean
     */
    public static function isUrl($url, $match = '/^(http:\/\/)?(https:\/\/)?([\w\d-]+\.)+[\w-]+(\/[\d\w-.\/?%&=]*)?$/')
    {
        $v = strtolower($url);
        if (empty($v)) {
            return false;
        }
        if ($match == '') {
            return !(filter_var($url, FILTER_VALIDATE_URL) === false);
        }
        return preg_match($match, $v);
    }

    /**
     * 获取当前时间
     *
     * @param string $format
     *
     * @return string
     */
    public static function getNow($format = "Y-m-d H:i:s")
    {
        return date($format);
    }

    /**
     * 解析数字类似20160522这样的格式
     *
     * @param $date
     *
     * @return bool|string
     */
    public static function getStandDate($date)
    {
        if (strlen($date) != 8) {
            return false;
        }
        $newDate = substr($date, 0, 4) . '-' . substr($date, 4, 2) . '-' . substr($date, 6, 2);
        if (date('Y-m-d', strtotime($newDate)) != $newDate) {
            return false;
        }
        return $newDate;
    }

    /**
     * 检查是不是正确的手机号码
     *
     * @param string $mobile
     *
     * @return bool
     */
    public static function isMobile($mobile)
    {
        if ($mobile == '') {
            return false;
        }
        return (!preg_match("/^1[3,4,5,7,8][0-9]{9}$/", $mobile)) ? false : true;
    }

    /**
     * 校验是不是邮箱
     *
     * @param $email
     *
     * @return bool
     */
    public static function isEmail($email)
    {
        if ($email == '') {
            return false;
        }
        return (!preg_match('/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/', $email)) ? false : true;
    }

    /**
     * 返回目录及其子目录名称和文件
     *
     * @param $dir string 目录名称
     *
     * @return array
     */
    public static function setReASRes($dir)
    {
        static $arr = [];
        if (is_dir($dir)) {
            $handle = opendir($dir);
            while ($file = readdir($handle)) {
                if (!in_array($file, ['.', '..'])) {
                    $dirs = $dir . $file . "/";
                    array_push($arr, $dirs);
                    if (is_dir($dirs)) {
                        self::setReASRes($dirs);
                    }
                }
            }
        }
        return $arr;
    }

    /**
     * 随机生成浮点数
     *
     * @param int $min
     * @param int $max
     *
     * @return float|int
     */
    public static function randFloat($min = 0, $max = 1)
    {
        return $min + mt_rand() / mt_getrandmax() * ($max - $min);
    }
}
